﻿using BonjourQuotation.ObjectModel.AccountData;
using BonjourQuotation.ObjectModel.BusinessData;
using BonjourQuotation.ObjectModel.ErrorData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BonjourQuotation.DataAccess.Repositories
{
    public interface IOperationRepository : IDisposable
    {
        OperationHotelGridBData LoadOperationHotels(int PageNum, List<string> UserRegions, string UserName);
        OperationRoomGridBData LoadOperationRooms(int PageNum, List<string> UserRegions);
        OperationBusGridBData LoadOperationBus(int PageNum, List<string> UserRegions, string UserName);
        OperationAttractionsGridBData LoadOperationAttractions(int PageNum, List<string> UserRegions, string UserName);
        OperationMiscGridBData LoadOperationMisc(int PageNum, List<string> UserRegions, string UserName);
        OperationTechProgGridBData LoadOperationTechProg(string GroupCode, OperationTechProgFilterBData FilterData);
        OperationTechProgGridBData ValidateOperationTechProg(string GroupCode, OperationTechProgFilterBData FilterData);
        OperationTechProgGridBData SaveOperationTechProg(OperationTechProgGridBData Data, OperationTechProgFilterBData FilterData);
        OperationGroupCheckListGridBData LoadOperationGroupCheckList(int PageNum, List<string> UserRegions, string UserName);
        OperationRoomGridBData LoadOperationRooms(int PageNum, OperationRoomSearchBData Data, List<string> UserRegions);
        OperationHotelGridBData OperationSearchHotel(OperationHotelGridBData Data, OperationHotelFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationAttractionsGridBData OperationSearchAttractions(OperationAttractionsGridBData Data, OperationAttractionsFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationAttractionsGridBData OperationFilterAttractions(OperationAttractionsGridBData Data, OperationAttractionsFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationAttractionsGridBData SaveOperationAttractions(OperationAttractionsGridBData Data, OperationAttractionsFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationMiscGridBData OperationSearchMisc(OperationMiscGridBData Data, OperationMiscFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationMiscGridBData OperationFilterMisc(OperationMiscGridBData Data, OperationMiscFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationMiscGridBData SaveOperationMisc(OperationMiscGridBData Data, OperationMiscFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationBusGridBData OperationSearchBus(OperationBusGridBData Data, OperationBusFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationBusGridBData OperationFilterBus(OperationBusGridBData Data, OperationBusFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationBusGridBData SaveOperationBus(OperationBusGridBData Data, OperationBusFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationGroupCheckListGridBData OperationSearchGroupCheckList(OperationGroupCheckListGridBData Data, OperationGroupCheckListFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationGroupCheckListGridBData OperationFilterGroupCheckList(OperationGroupCheckListGridBData Data, OperationGroupCheckListFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationHotelGridBData OperationFilterHotel(OperationHotelGridBData Data, OperationHotelFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationHotelGridBData SaveOperationHotel(OperationHotelGridBData Data, OperationHotelFilterBData FilterData, int PageNum, List<string> UserRegions, string UserName);
        OperationRoomGridBData OperationFilterRoom(OperationRoomFilterBData Data, int PageNum, List<string> UserRegions);
        OperationRoomGridBData SaveOperationRooms(OperationRoomGridBData Data, OperationRoomFilterBData FilterData, int PageNum, List<string> UserRegions);
        ErrorBInfo OverWriteOperationRooms(int GroupID);
        ErrorBInfo OverWriteOperationRoomsByVendorID(int GroupID, int VendorID, DateTime ArrivalDate);
        OperationRoomGridBData RemoveOperationRooms(OperationRoomFilterBData Data, int GroupId, int LineNo, int PageNum, List<string> UserRegions);
        Dictionary<int, string> FindKeywordInEntity(string PropName, string keyword, List<string> UserRegions);
        OperationRoomSearchGridBData OperationRoomSearchComplete(string PropName, string keyword, List<string> UserRegions);
        OperationVendorHotelGridBData OperationVendorHotelGridLoad(int GroupID);
        OperationGVendorRoomGridBData OperationGroupVendorGridLoad(int GroupID, int VendorID);
        OperationVendorConfirmGridBData OperationVendorConfirmGridLoad(int GroupID, int VendorID, DateTime ArrivalDate);
        OperationVendorConfirmGridBData SaveOperationVendorConfirm(OperationVendorConfirmGridBData Data);
        OperationAttrBusConfirmGridBData OperationAttrBusConfirmGridLoad(int GroupID, int VendorID, DateTime ArrivalDate, string VendorType);
        OperationAttrBusConfirmGridBData SaveOperationAttrBusConfirm(OperationAttrBusConfirmGridBData Data);
        ErrorBInfo OperationVendorConfirmUpdateProvide(int GroupID, int VendorID, DateTime ArrivalDate);
        OperationInvoiceBData OperationLoadInvoiceByGroupID(int GroupID);
        OperationInvoiceBData OperationLoadGirInvoice(int GroupID, int CustomerID);
        OperationInvoiceBData OperationRemoveInvoice(int GroupID, int LineNo, bool IsGir, int CustomerID);
        OperationInvoiceBData SaveOperationInvoice(OperationInvoiceBData Data);
        OperationGVendorRoomGridBData SaveOperationGroupVendorRooms(OperationGVendorRoomGridBData Data);
        OperationGVendorRoomGridBData RemoveOperationGroupVendorRooms(int GroupID, int VendorID, DateTime ArrivalDate, int LineNo);
        OperationGirGroupPricesGridBData OperationLoadGirPrices(int QuotaID, int GroupID);
        OperationGirGroupPricesGridBData OperationSaveGirPrices(OperationGirGroupPricesGridBData Data);
        OperationOptionalBData LoadOperationOptional(int VendorID);
        OperationAmexVendorBData LoadOperationAmexVendors(int VendorID, int GroupID, int CardID, int LineNo, DateTime ArrivalDate, string OperationTabName, string Category, DateTime? Time);
        ErrorBInfo SaveOperationAmexVendorDetailsData(OperationAmexVendorBData Data);
        ErrorBInfo UpdateVendorConfirmPath(int VendorID, int GroupID, string VendorConfirmPath, string VendorType, bool UpdateAll);
        bool CheckGroupCodeRegion(string GroupCode, List<string> UserRegions);
    }
}
